package com.chenjt.netty.four_protobuf.simple;

import com.google.protobuf.InvalidProtocolBufferException;

/**
 * 需求：
 * 1.把对象构造好，构造好把它生成到字节数组里面
 * 2.从字节数组里面读取出来，还原成对象，再输出对象内容
 *
 * @author chenjt
 * @date 2024/8/10 15:36
 */
public class ProtoBufTest {

    public static void main(String[] args) throws InvalidProtocolBufferException {
        /**
         * 比如 DataInfo.Student student 是在a机器构造出来的对象，然后转换为字节数组
         * 之后通过网络传输协议，通过netty的形式发给b机器
         * 在b机器上将a机器所生成的数组反序列化成一个对象，再将对象打印出来
         *
         * 实际上就实现了两台机器上的RPC（远程过程调用）
         *
         * a、b机器可用不同语言，比如在a机器上是java对象，b机器上反序列化后的对象可以是python对象
         *
         */
        DataInfo.Student student = DataInfo.Student.newBuilder()
                .setName("张三")
                .setAge(20)
                .setAddress("北京")
                .build();

        byte[] student2ByteArray = student.toByteArray();
        DataInfo.Student student2 = DataInfo.Student.parseFrom(student2ByteArray);

        System.out.println(student2.getName());
        System.out.println(student2.getAge());
        System.out.println(student2.getAddress());


    }

}
